const express = require('express');
const router = express.Router();
const { Address } = require('../models/Di'); // 导入地址模型

// 添加地址接口
router.post('/addAddress', async (req, res) => {

  try {
    // 从请求体中获取地址数据
    const {
      recipient,
      phone,
      provinceCode,
      provinceName,
      cityCode,
      cityName,
      districtCode,
      districtName,
      detailAddress,
      isDefault,
      logId
    } = req.body;
    // 验证必填项
    if (!recipient || !phone || !provinceCode || !provinceName || !cityCode || !cityName || !districtCode || !districtName || !detailAddress) {
      return res.status(400).json({ message: '请填写完整地址信息' });
    }

    // 创建新地址
    const newAddress = new Address({
      recipient,
      phone,
      provinceCode,
      provinceName,
      cityCode,
      cityName,
      districtCode,
      districtName,
      detailAddress,
      isDefault: isDefault || false, // 如果未传，默认设为 false
      logId
    });

    // 保存到数据库
    await newAddress.save();

    // 返回成功响应
    res.status(200).json({
      message: '地址添加成功',
      data: newAddress
    });
  } catch (error) {
    // 错误处理
    res.status(500).json({
      message: '添加地址失败',
      error: error.message
    });
  }
});
// 获取地址接口
router.get('/list', async (req, res) => {
  const list = await Address.find()
  res.send({
    code:200,
    list
  })
});

//编辑地址
// 后端路由（router.js）新增接口
router.get('/getAddressById', async (req, res) => {
  try {
    const { _id } = req.query; // 获取前端传递的地址ID
    // 根据ID从数据库查询地址
    const address = await Address.findById(_id);
    
    if (!address) {
      return res.status(404).json({ message: '地址不存在' });
    }

    // 返回地址数据（供前端回显）
    res.status(200).json({
      code: 200,
      data: address // 包含recipient、phone、provinceCode等字段
    });
  } catch (error) {
    res.status(500).json({
      message: '查询地址失败',
      error: error.message
    });
  }
});


// 编辑地址：更新地址接口（新增）
router.post('/updateAddress', async (req, res) => {
  try {
    const { _id, ...updateData } = req.body; // 从请求体获取ID和要更新的数据

    // 验证ID是否存在
    if (!_id) {
      return res.status(400).json({
        code: 400,
        message: '缺少地址ID，无法更新'
      });
    }

    // 验证必填字段
    const { recipient, phone, provinceCode, cityCode, districtCode, detailAddress } = updateData;
    if (!recipient || !phone || !provinceCode || !cityCode || !districtCode || !detailAddress) {
      return res.status(400).json({
        code: 400,
        message: '请填写完整的地址信息'
      });
    }

    // 根据ID查询并更新地址（new: true 表示返回更新后的最新数据）
    const updatedAddress = await Address.findByIdAndUpdate(
      _id,
      updateData, // 更新的数据（包含收件人、手机号等）
      { new: true } // 关键：返回更新后的地址对象
    );

    // 如果地址不存在
    if (!updatedAddress) {
      return res.status(404).json({
        code: 404,
        message: '地址不存在，更新失败'
      });
    }

    // 更新成功：返回成功状态和更新后的数据
    res.status(200).json({
      code: 200,
      message: '地址更新成功',
      data: updatedAddress
    });

  } catch (error) {
    // 错误处理（如数据库错误）
    res.status(500).json({
      code: 500,
      message: '更新地址失败',
      error: error.message
    });
  }
});
module.exports = router;